home *** CD-ROM | disk | FTP | other *** search
/ Atari Forever 4 / Atari Forever 4.zip / Atari Forever 4.iso / SERIE_S / S_899 / ALICE / SETTER.GEM / SETTER.TXT < prev   
Text File  |  1998-03-14  |  13KB  |  336 lines

  1. SETTER.PRG, ein Konfigurator
  2. ****************************
  3.  
  4. Copyright
  5. =========
  6.  
  7. SETTER.PRG darf zusammen mit diesem Text frei kopiert werden, soweit die
  8. Bedingungen aus der Info-Box < SETTER | Über Setter ... | Info > befolgt
  9. werden.
  10.  
  11. Ich hafte natürlich in keinster Weise für irgendwelche Auswirkungen oder
  12. Nichtwirkungen, die der Einsatz oder Nichteinsatz von SETTER.* hat. Es ist
  13. zwar nicht sehr wahrscheinlich, aber durchaus möglich, daß SETTER
  14. irgendwelche Daten vernichtet, die für Sie essentielle Bedeutung haben!
  15.  
  16. Originalton Harun:
  17.  
  18. Möglicherweise finden auch andere Programmierer SETTER nützlich, bitte,
  19. ihr dürft es benutzen. Aber!:
  20. Wenn jemand eine erweiterte Version von SETTER in Umlauf bringt, muß:
  21. - diese ebenfalls frei kopierbar sein.
  22. - diese entsprechend gekennzeichnet sein.
  23. - er mir eine Nachricht, besser ein Exemplar, kostenlos zukommen lassen.
  24. Ich kann es nicht ausstehen, wenn jemand meine Spezifikation ändert.
  25. Erweitern ist erlaubt und erwünscht, aber bitte keine bereits vorhandenen
  26. Kommandos ändern.
  27.  
  28. "Ich" bin: Harun Scheutzow,
  29. zu erreichen im Internet über
  30. Harun_Scheutzow@B.maus.de
  31. bzw. im Mausnetz: Harun Scheutzow @B
  32.  
  33. Ende des Originaltons.
  34.  
  35.  
  36. SETTERs Sinn und Zweck:
  37. =======================
  38.  
  39. Die kleinen ASCII-Textfiles, mit denen viele Programme konfiguriert werden,
  40. sind Harun auf die Nerven gegangen. Sie haben zwar den Vorteil der
  41. Änderbarkeit mit jedem Texteditor, liegen als Nachteil aber mit im
  42. Verzeichnis rum und sind trotzdem oft nicht da, wo sie sein sollten.
  43.  
  44. Deshalb hat er die Konfigurationsinformationen direkt im Programm
  45. untergebracht und mit einer kurzen Erklärung versehen. Bei residenten
  46. Programmen liegen diese Erklärungen natürlich im nichtresidenten Teil (kein
  47. Problem bei Assemblerprogrammierung). Konfiguriert werden solche Programme
  48. mit SETTER, das die Informationen und Erklärungen aus dem Programm liest und
  49. die Konfiguration wieder im Programm speichert.
  50.  
  51.  
  52. Nutzung
  53. =======
  54.  
  55. Entweder man zieht das zu bearbeitende Programm mit der Maus auf
  56. SETTER.PRG oder ruft SETTER von einer Shell mit einer Befehlszeile auf oder
  57. startet es durch Doppelklick. Ob Programm wirklich konfigurierbar sind,
  58. erkennt SETTER mit hoher Sicherheit automatisch.
  59.  
  60. In der Befehlszeile sind folgende Kommandos erlaubt, die entsprechende ihrer
  61. Reihenfolge abgearbeitet werden:
  62.   -I:<datei>
  63.     Programm oder Setterblockdatei laden.
  64.   -E:<datei>
  65.     Obersten Konfigurationsblock in die Datei speichern.
  66.   -C
  67.     Obersten Konfiguationsblock freigeben.
  68.   -C:<datei>
  69.     Konfigurationsblock, der aus der angegebenen Datei geladen wurde,
  70.     freigeben.
  71. Beispiel:
  72.   -I:Datei1.PRG -E:Datei1.BLK -I:Datei2.PRG -C:Datei1.PRG -C
  73.   1. Datei1.PRG lesen
  74.   2. Den gelesenen Konfigurationsblock aus Datei1.PRG nach Datei1.BLKL
  75.      speichern
  76.   3. Datei2.PRG lesen
  77.   4. Den Konfigurationsblock von Datei1.PRG vergessen
  78.   5. Den obersten Konfigurationsblock - das ist der aus Datei2.PRG -
  79.      vergessen
  80.  
  81. Wurde SETTER ohne Kommandos gestartet, so erscheint eine GEM-Oberfläche mit
  82. Menüzeile. U.U. öffnen sich gleich ein paar Fenster, nämlich falls Dateinamen
  83. übergeben wurden.
  84.  
  85.  
  86. Das Menü
  87. ========
  88.  
  89. Die Tastaturkürzel im Menü können mit Hilfe eines RSC-Kontruktion-Sets
  90. geändert werden. Es ist lediglich zu beachten, daß dem Kürzel kein
  91. Leerzeichen mehr folgen darf.
  92.  
  93. SETTER
  94. ------
  95.   Hier findet sich nur der Menüpunkt < Über SETTER ... >, der sich selbst
  96.   erklärt.
  97.  
  98. Datei
  99. -----
  100.  
  101. < Öffnen ... >
  102.  
  103.   Über eine Dateiauswahl kann ein Konfigurationsblock aus einem Programm oder
  104.   einem gespeicherten Setterblock eingelesen werden. Es öffnet sich dann ein
  105.   Fenster, in dem die Konfiguration angezeigt wird.
  106.  
  107. < Schließen >
  108.   Der oberste Konfigurationsblock wird freigegeben. Wurden Änderungen daran
  109.   vorgenommen, so erfolgt eine Sicherheitsabfrage, ob er nicht zunächst
  110.   gesichtert werden soll.
  111.  
  112. < Sichern >
  113.   Der oberste Konfigurationsblock wird in die Datei gespeichert, aus der er
  114.   stammt.
  115.  
  116. < Sichern als ... >
  117.   Der oberste Konfigurationsblock kann in eine andere oder eine neue Datei
  118.   gespeichert werden. Wird in eine existierende Datei gespeichert, so erfolgt
  119.   eine Überprüfung, ob diese Datei überhaupt einen Konfigurationsblock mit
  120.   identischen Aufbau besitzt. Ist das nicht der Fall, verweigert SETTER die
  121.   Zerstörung der Datei.
  122.   Wird in eine neue Datei gespeichert, so wird in dieser nur der
  123.   Konfigurationsblock mit einer vorangestellten Kennung gespeichert.
  124.   Besitzt die Datei die Endung ".C", ".H" oder ".S", so tritt ein Sonderfall
  125.   in Aktion. Bei ".S" wird eine Assemblersourcedatei mit dem
  126.   Konfigurationsblock gespeichert; bei ".H" eine C-Headerdatei mit der
  127.   Definition eines Types SETTERBLK, der im Aufbau genau dem
  128.   Konfigurationsblock entspricht. Bei ".C" wird eine Initialisierung für eine
  129.   Variable setterblk von genau diesem Typ gespeichert und außerdem die
  130.   zugehörige C-Headerdatei.
  131.   Befinden sich in den Erklärungen Strings, die mit einem # beginnen und
  132.   maximal 10 Zeichen enthalten, die einen gültigen C-Bezeichner darstellen, so
  133.   werden in der C-Headerdatei Untertypen damit benannt.
  134.  
  135. < Beenden >
  136.   Alle offenen Konfigurationsblöcke werden geschlossen und SETTER beendet.
  137.  
  138.  
  139. Fensterbedienung
  140. ================
  141.  
  142. Die Fenster sind normal bedienbar. Das oberste Fenster kann außer mit der
  143. Maus auch über verschiedene Tasten bedient werden. Durch Anklicken einer
  144. Zeile, wird der Cursor sichtbar. Dieser kann dann mit den Cursortasten AUF und
  145. AB verschoben werden. Mit LINKS und RECHTS wird der Fensterinhalt nach links
  146. und rechts verschoben. Mit SHIFT-LINKS und SHIFT-RECHTS gelangt man an den
  147. Anfang bzw. das Ende des darstellbaren Bereichs, mit CTRL-LINKS und
  148. CTRL-RECHTS seitenweise nach links bzw. rechts.
  149.  
  150. Durch Doppelklick oder mit Enter/Return wird zur entsprechenden Zeile eine
  151. Dialogbox angezeigt. In dieser kann die Konfiguration geändert werden.
  152.  
  153. Das war schon alles in der Bedienung.
  154.  
  155.  
  156. Umschalten auf eine andere Sprache
  157. ==================================
  158.  
  159. Da  inzwischen  alle Ausgaben in RSC- und String-Dateien ausgelagert wurden, ist
  160. es  möglich,  SETTER auf eine andere Sprache umzustellen. Dazu muß lediglich die
  161. gewünschte Sprachdatei SETTER_?.STR in SETTER.STR umbenannt werden.
  162. Folgende Sprachen sind derzeit vorhanden:
  163.     SETTER_G.STR    deutsche Ausgaben
  164.     SETTER_E.STR    englische Ausgaben
  165. Die  Resourcedateien  dürfen  nicht  umbenannt werden. Welche Resourcen zu laden
  166. sind ist in der jeweiligen Stringdatei festgelegt.
  167.     SETTER_G.STR --> SETTER.STR ===> automatisch wird SETTER_G.RSC geladen
  168.     SETTER_E.STR --> SETTER.STR ===> automatisch wird SETTER_E.RSC geladen
  169.  
  170.  
  171. Implementierung einer neuen Sprache
  172. ===================================
  173.  
  174. Zunächst kopiere man SETTER_G.STR und SETTER_G.RSC und bennene diese um, z.B. in
  175. SETTER_F.STR   und  SETTER_F.RSC  für französisch. Nun können die beiden Dateien
  176. mit  einem normalen Resourcen-Editor verändert werden. Der erste String nach den
  177. Alerts  in SETTER_?.STR gibt den Namen der RSC-Datei wieder und ist entsprechend
  178. zu ändern.
  179.  
  180.  
  181. Danksagung:
  182. ===========
  183.  
  184. Mein Dank gilt Harun Scheutzow, der zwar des öfteren eine andere Auffassung
  185. als ich vertritt, aber dennoch immer wieder ganz brauchbare Ideen hat. Vom
  186. ihm stammt die Idee und erste Ausführung von SETTER (als kleines TTP).
  187.  
  188.  
  189. Versionen
  190. =========
  191.  
  192. In der Dialogbox über Setter < SETTER | Über SETTER ... > wird ein Datum
  193. angezeigt. Dieses gibt an Stelle einer Versionsnummer die Version wieder. Bei
  194. Fragen und Problemen sollte dieses Datum mit angegeben werden.
  195.  
  196. Ich bin im MausNet per e-mail erreichbar:
  197. Markus Kohm @ KA2
  198. oder via Internet:
  199. Markus_Kohm@KA2.maus.de
  200.  
  201.  
  202. 6. Dezember 1993
  203.     - erste freigegebene Version
  204.  
  205. 9. Dezember 1993
  206.     - Wird ein einzelnes Fenster in den Hintergrund gelegt, wurde das Fenster
  207.       versehentlich aus der internen Fensterliste gelöscht.
  208.       (gemeldet von Manfred Vogel)
  209.     - Genereller Redrawfehler bei den Dialogboxen, wenn Let 'em Fly nicht
  210.       verwendet wurde.
  211.     - Zeitweiliger Redrawfehler bei den Dialogboxen, wenn Let 'em Fly nicht
  212.       verwendet wurde.
  213.  
  214. 10. Dezember 1993
  215.     - Bei Zeichenketten wird wie bei allen anderen Werten im Fenster nun auch
  216.       ein senkrechter Strich zur Abtrennung angezeigt.
  217.     - Bei der Ausgabe als C-Source war ein Fehler in der Anzahl der
  218.       Listenelemente bei SETTERLIMITWORDS und SETTERLIMITLONGS. Es wurden
  219.       immer von genau zwei Elementen zuviel ausgegangen.
  220.     - Redrawoptimierung rausgeworfen, weil es beim Scrollen über die Maus
  221.       unter Umständen sonst zu seltsamen Effekten kommt.
  222.     - Fehlermeldungen bei Bereichsüberschreitung wird nicht nun nicht nur
  223.       zusammengebaut sondern auch ausgegeben.
  224.     - Bei der Ausgabe als C-Source werden nun auch Anführungszeichen und
  225.       Backslash korrekt behandelt.
  226.     - Die Ausgabe als S-Source setzt nun zusätzliche Labels wie beim C-Source.
  227.     - C-Source- und S-Source-Ausgaben insgesamt verbessert.
  228.  
  229. 15. Dezember 1993
  230.     - Fehler in der Darstellung der Titelboxen, der sich neu eingeschlichen
  231.       hatte, wieder behoben.
  232.       (gemeldet von Manfred Vogel)
  233.  
  234. 22. Dezember 1993
  235.     - Fehler in der Cursorpositionierung mit der Maus behoben. Es wurde
  236.       relativ zur ersten Datenzeile insgesamt positioniert. Nun wird korrekt
  237.       relativ zur ersten angezeigten Datenzeile positioniert.
  238.       (gemeldet von Thorsten Wollweber)
  239.  
  240. 6. April 1994
  241.     - Soweit dies möglich war, sind nun die Texte aller ausgegebenen Meldungen
  242.       in die RSC-Datei verlagert. Damit sollte eine fremdsprachige Version
  243.       sehr viel leichter zu erstellen sein.
  244.  
  245.  
  246. 8. April 1994
  247.     - Da auf Grund obiger Änderung kein Batch-Betrieb mehr möglich war,
  248.       schließlich mußte SETTER.RSC immer geladen werden, wurde das Konzept
  249.       nochmals geändert. Die freien Strings sind nun in einer getrennten Datei
  250.       abgelegt, die unabhängig vom AES geladen wird.
  251.       Diese Datei wird im aktuellen Verzeichnis und über die
  252.       Environmentvariablen SETTER (Suchpfad!) und PATH gesucht.
  253.  
  254.  
  255. (Der reine Anwender braucht nicht weiter zu lesen.)
  256. Spezifikation des Speicherns modifizierbarer Informationen in Programmen
  257. ========================================================================
  258.  
  259. Original von Harun Scheutzow, 21.11.1993
  260. erweitert von Markus Kohm, 06.12.1993
  261.  
  262.  
  263. Die Modifikation erfolgt durch ein SETTER.TTP oder SETTER.PRG, welches das
  264. Programm bearbeitet, dessen Einsstellungen zu verändern sind.
  265.  
  266. Im TEXT- oder DATA-Segment befindet sich auf einer geraden Adresse der
  267. nullterminierte String "hAruNs cONfigER" (inklusive 0-Byte genau 16 Zeichen
  268. lang) und dahinter ein LONG-Zeiger auf den Anfang des Strings. In
  269. Assembler:
  270.  
  271.       .even
  272. hkbg:
  273.       .dc.b "hAruNs cONfigER",0
  274.       .dc.l hkbg
  275.  
  276. Enthält die Datei lediglich einen Setterblock, ohne ein Programm zu sein, so
  277. beginnt sie mit:
  278.  
  279.       .dc.b "MaRkus cONfigER",0
  280.  
  281. Darauf folgen als Liste die einzelnen Objekte, die aus Anzeigetext,
  282. Art der Konfiguration und Konfigurationsplatz bestehen.
  283.  
  284. Der Anzeigetext ist ein C-String (also nullterminiert) und auf die nächste
  285. gerade Adresse evtl. mit einem zusätzlichen 0-Byte aufgefüllt. Ist der
  286. Anzeigestring leer (nur 0-Byte), so endet hier die Liste der Objekte.
  287.  
  288. Das Konfigurationskommando ist ein WORD (16Bit) mit folgenden möglichen
  289. Werten im Highbyte:
  290.  
  291. 0
  292. Ja/Nein Entscheidung. Das folgende WORD wird für JA auf $FFFF und für
  293. NEIN auf $0000 gesetzt.
  294.  
  295. 1
  296. LONG-Werteingabe-Liste. Im Lowbyte steht die Anzahl der Listenelemente.
  297. Die folgenden LONG werden auf die Werte der eingegebenen 32-Bit-Integer
  298. gesetzt. Die interne ungültig-Kennung für einen Platz ist $80000000.
  299.  
  300. 2
  301. String-Eingabe. Im Lowbyte steht die Maximallänge des Eingabestrings
  302. inklusive des abschließenden Nullbytes. Diese Länge muß gerade sein. Der
  303. eingegebene String wird unmittelbar hier hinter abgelegt und bis zur
  304. Maximallänge mit 0-Bytes aufgefüllt.
  305.  
  306. 3
  307. WORD-Werteingabe-Liste. Im Lowbyte steht die Anzahl der Listenelemente.
  308. Die folgenden WORD werden auf die Werte der eingegebenen 16-Bit-Integer
  309. gesetzt. Die interne ungültig-Kennung für einen Platz ist $8000.
  310.  
  311. 4
  312. Derzeit nicht verwendet, aber für mich reserviert.
  313.  
  314. 5
  315. LONG-Werteingabe-Liste mit Wertbereichseingrenzung. Im Lowbyte steht die
  316. Anzahl der Listenelemente. Bevor nun die Liste wie bei 1 kommt, folgen zwei
  317. LONG, welchen die untere und obere Grenze des erlaubten Wertebereichs
  318. bestimmen. Die folgenden LONG werden auf die Werte der eingegebenen
  319. 32-Bit-Integer gesetzt. Die interne ungültig-Kennung für einen Platz ist
  320. $80000000, darf aber nur verwendet werden, wenn dies im Wertebereich liegt.
  321.  
  322. 6
  323. Datei- oder Pfadname. Entspricht grundsätzlich 2, jedoch ist die Länge auf
  324. maximal 128 Byte beschränkt und im Stringdialog ist zusätzlich der Aufruf
  325. einer Dateiauswahlbox möglich.
  326.  
  327. 7
  328. WORD-Werteingabe-Liste mit Wertbereichseingrenzung. Im Lowbyte steht die
  329. Anzahl der Listenelemente. Bevor nun die Liste wie bei 3 kommt, folgen zwei
  330. WORD, welchen die untere und obere Grenze des erlaubten Wertebereichs
  331. bestimmen. Die folgenden WORDwerden auf die Werte der eingegebenen
  332. 16-Bit-Integer gesetzt. Die interne ungültig-Kennung für einen Platz ist
  333. $8000, darf aber nur verwendet werden, wenn dies im Wertebereich liegt.
  334.  
  335. Das war's bisher.
  336.